﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;

namespace FastTravel.Utilites
{
	/// <summary>
	/// Класс для расширения метода Response
	/// </summary>
	public static class ResponseHelper
	{
		/// <summary>
		/// Редирект на страницу
		/// </summary>
		/// <param name="response">Текущий HttpResponse</param>
		/// <param name="url">Адрес</param>
		/// <param name="target">Парметр ссылки</param>
		/// <param name="windowFeatures">Параметры открываемого окна браузера</param>
		/// <example>Response.Redirect("popup.aspx", "_blank", "menubar=0,width=100,height=100");</example>
		public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures)
		{

			if ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && String.IsNullOrEmpty(windowFeatures))
			{
				response.Redirect(url);
			}
			else
			{
				Page page = (Page)HttpContext.Current.Handler;
				if (page == null)
				{
					throw new InvalidOperationException(
						"Не могу перенаправить на необходимую страницу.");
				}
				url = page.ResolveClientUrl(url);

				string script;
				script = !String.IsNullOrEmpty(windowFeatures) ? @"window.open(""{0}"", ""{1}"", ""{2}"");" : @"window.open(""{0}"", ""{1}"");";

				script = String.Format(script, url, target, windowFeatures);
				ScriptManager.RegisterStartupScript(page,
					typeof(Page),
					"Redirect",
					script,
					true);
			}
		}
	}
}
